package com.example.wenzh.listview4;

import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.ListView;

import java.util.ArrayList;

public class MainActivity extends AppCompatActivity implements IOnDelListener{
    private ListView nameListView;
    private MyAdapter adapter;
    private ArrayList<Student> studentArrayList=new ArrayList<>();
//    定义一个button按钮
    private Button btnAddStu;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        ininStuList();

        nameListView=findViewById(R.id.name_listview);

        adapter=new MyAdapter(MainActivity.this,studentArrayList,MainActivity.this);

        nameListView.setAdapter(adapter);

//        绑定button按钮
        btnAddStu=findViewById(R.id.btn_addStu);
//        实现button的点击事件
        btnAddStu.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
//                启动AddActivity
                Intent intent=new Intent();
//                第一个参数是上下文，第二个参数是
                intent.setClass(MainActivity.this,
                        AddActivity.class);
//                添加并刷新学生的步骤
//                不可以拿MainActivity里面的学生列表拿到AddActivity里面添加
//                而是要把AddActiviy里面的学生信息送回到MainActivity里面添加
//第一步：启动AddActivity时是需要拿到一个结果的，所以把startActiviy改为startActiviyForResult，里面的
//                两个差数是intent和请求码
//                第二步：去到AddActivity里面
                startActivityForResult(intent,1001);
            }
        });
    }

//    第三步：把AddActivity里面保存的信息显示在页面中，在onCreate同级的地方加
    @Override
//    第一个参数是请求码，第二个参数是返回码，第三个intent
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        Log.e("MainActiviy","requestCode="+requestCode+"resultCode="+resultCode);
//        解决在第二界面（添加学生）时不输入学生信息直接按返回时出现的bug
        if(data==null){
            return;
//            空值的时候就不跑下面的代码
        }
//        取出这个学生
        String name=data.getStringExtra("NAME");
//        第一个参数是数据，第二个是默认值，int是0，String是null
        int age=data.getIntExtra("AGE",0);
        int imgId=data.getIntExtra("IMG",R.drawable.dog1);
//        上面的String，int，int是把第二界面的数据拿回到主界面
//        在主界面创建一个学生
        Student s=new Student(imgId,name,age);
        studentArrayList.add(s);
//刷新数据显示数据
        adapter.notifyDataSetChanged();
    }

    private void ininStuList() {
        Student s1=new Student(R.drawable.dog1,"张三",18);
        Student s2=new Student(R.drawable.dog2,"李四",22);
        Student s3=new Student(R.drawable.dog3,"狗娃",23);
        Student s4=new Student(R.drawable.dog4,"狗蛋",25);
        Student s5=new Student(R.drawable.dog5,"狗狗",30);
        studentArrayList.add(s1);
        studentArrayList.add(s2);
        studentArrayList.add(s3);
        studentArrayList.add(s4);
        studentArrayList.add(s5);
    }

    @Override
    public void del(int i) {
        Log.e("MainActivityi","del");
        studentArrayList.remove(i);
        adapter.notifyDataSetChanged();
    }
}
